// 博客发布页面的mock数据

// 模拟HTTP请求延迟
const delay = (ms = 300) => {
  return new Promise(resolve => setTimeout(resolve, ms));
};

// 模拟博客分类数据
export const mockBlogCategories = [
  { id: 1, name: '前端开发' },
  { id: 2, name: '后端开发' },
  { id: 3, name: '移动开发' },
  { id: 4, name: '人工智能' },
  { id: 5, name: '云计算' },
  { id: 6, name: '数据库' },
  { id: 7, name: '网络安全' },
  { id: 8, name: '工具资源' },
  { id: 9, name: '开发经验' },
  { id: 10, name: '其他' }
];

// 模拟博客标签数据
export const mockBlogTags = [
  'JavaScript', 'Python', 'Java', 'Go', 'React', 'Vue', 'Node.js',
  'TypeScript', 'MySQL', 'MongoDB', 'Redis', 'Docker', 'Kubernetes',
  '微服务', '性能优化', '算法', '数据结构', '设计模式', '单元测试',
  'CI/CD', 'DevOps', '区块链', '大数据', '机器学习', '深度学习'
];

// 模拟草稿数据
let mockDrafts = [];

// 模拟发布博客
/**
 * 发布博客
 * @param {Object} blogData - 博客数据
 * @returns {Promise} - 返回发布结果
 */
export const publishBlog = async (blogData) => {
  // 模拟网络延迟
  await delay();
  
  // 模拟发布成功
  return {
    code: 0,
    message: '发布成功',
    data: {
      articleId: Date.now(), // 模拟生成文章ID
      publishTime: new Date().toISOString()
    }
  };
};

// 模拟保存草稿
/**
 * 保存草稿
 * @param {Object} blogData - 博客数据
 * @returns {Promise} - 返回保存结果
 */
export const saveDraft = async (blogData) => {
  // 模拟网络延迟
  await delay();
  
  // 生成或更新草稿
  const draftId = blogData.draftId || Date.now();
  const draftIndex = mockDrafts.findIndex(draft => draft.draftId === draftId);
  
  const draftData = {
    draftId,
    title: blogData.title || '',
    content: blogData.content || '',
    coverUrl: blogData.coverUrl || '',
    tags: blogData.tags || [],
    summary: blogData.summary || '',
    type: blogData.type || 'original',
    visibility: blogData.visibility || 'public',
    saveTime: new Date().toISOString()
  };
  
  if (draftIndex >= 0) {
    mockDrafts[draftIndex] = draftData;
  } else {
    mockDrafts.push(draftData);
  }
  
  // 模拟保存成功
  return {
    code: 0,
    message: '草稿保存成功',
    data: {
      draftId,
      saveTime: draftData.saveTime
    }
  };
};

// 模拟定时发布博客
/**
 * 定时发布博客
 * @param {Object} blogData - 博客数据
 * @param {string} publishTime - 定时发布时间
 * @returns {Promise} - 返回定时发布结果
 */
export const schedulePublish = async (blogData, publishTime) => {
  // 模拟网络延迟
  await delay();
  
  // 模拟定时发布成功
  return {
    code: 0,
    message: '已设置定时发布',
    data: {
      articleId: Date.now(),
      scheduleTime: publishTime
    }
  };
};

// 模拟上传图片
/**
 * 上传图片
 * @param {string} tempFilePath - 临时文件路径
 * @param {string} type - 图片类型（cover/article）
 * @returns {Promise} - 返回上传结果
 */
export const uploadImage = async (tempFilePath, type = 'article') => {
  // 模拟网络延迟
  await delay();
  
  // 模拟上传成功，返回新的图片URL
  return {
    code: 0,
    message: '上传成功',
    data: {
      imageUrl: 'https://zxs-lyblog.oss-cn-hangzhou.aliyuncs.com/user-header/user_header.png'
    }
  };
};

// 模拟获取草稿列表
/**
 * 获取草稿列表
 * @returns {Promise} - 返回草稿列表
 */
export const getDrafts = async () => {
  // 模拟网络延迟
  await delay();
  
  // 返回草稿列表
  return {
    code: 0,
    message: 'success',
    data: {
      drafts: mockDrafts,
      total: mockDrafts.length
    }
  };
};

// 模拟获取草稿详情
/**
 * 获取草稿详情
 * @param {string} draftId - 草稿ID
 * @returns {Promise} - 返回草稿详情
 */
export const getDraftDetail = async (draftId) => {
  // 模拟网络延迟
  await delay();
  
  // 查找草稿
  const draft = mockDrafts.find(item => item.draftId === draftId);
  
  if (draft) {
    return {
      code: 0,
      message: 'success',
      data: draft
    };
  } else {
    return {
      code: -1,
      message: '草稿不存在'
    };
  }
};